package com.miku.blog.service;

import com.miku.blog.domain.Resource;
import com.baomidou.mybatisplus.extension.service.IService;
import com.miku.blog.domain.dto.ResourceUserDTO;
import com.miku.blog.domain.pojo.ResponseResult;

import java.util.List;
import java.util.Map;

/**
* @author Miku
* @description 针对表【tb_resource】的数据库操作Service
* @createDate 2022-06-01 22:06:09
*/
public interface ResourceService extends IService<Resource> {

    /**
     * 根据角色Id 获取 资源模块 列表 {子模块}
     * 根据资源模块路径  。转换成Map集合返回 {用于判断角色是否有 对应资源的请求权限}
     * @param roleId
     * @return
     */
    Map<String, List<ResourceUserDTO>> getResourcesByRoleId(Integer roleId);

    /**
     * 根据资源列表 ,转换成Map集合返回 {用于判断角色是否有 对应资源的请求权限}
     * @param resourceList
     * @return
     */
    Map<String, List<ResourceUserDTO>> getResourceMap(List<Resource> resourceList);

    /**
     * 获取资源模块列表 { 二级列表 }   [角色管理]
     * @return
     */
    ResponseResult getResources();

    /**
     * 获取资源模块列表接口 ( 资源管理 菜单 )
     * @return
     */
    ResponseResult getResourceList(String keywords);

    /**
     * 新增资源模块
     * @param resource
     * @return
     */
    ResponseResult addResource(Resource resource);

    /**
     * 删除资源模块
     * @param resourceIdList
     * @return
     */
    ResponseResult deleteResource(Integer[] resourceIdList);


    /**
     * 更新资源模块匿名访问状态
     * @param resourceId
     * @param isAnonymous
     * @return
     */
    ResponseResult isAnonymous(Integer resourceId, Integer isAnonymous);


    /**
     * 获取所有子资源
     * @return
     */
    List<Resource> getResourceChildrenList();
}
